<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:fnc="http://yournamespace.com/fnc">
    <ui:composition>
        <h:panelGroup id="displayLista" rendered="#{facesContext.externalContext.requestServletPath != fnc:concat(ConfiguracionBean.rutaContexto,'numeracion-lista.xhtml')}">

            <h:panelGroup rendered="#{!ConfiguracionModulosBean.moduloNumeracion}">
                <h:outputText value="Este módulo está desactivado" style="color: red;"/>
            </h:panelGroup>
            <h:panelGroup rendered="#{ConfiguracionModulosBean.moduloNumeracion}">
                

                <h:panelGrid id="pgNumeracion" width="100%">
                    <h:form id="frmDatos">
                        <h:panelGrid style="text-align: left;font-size:10px" rendered="#{UserBean.login}">
                            <h:panelGroup id="opciones">
                                <p:commandButton value="Acción" ajax="true" actionListener="#{NumeracionBean.detalleAccionNum}" update=":datosAccionRecurso,:display" oncomplete="numAccionDialog.show();" icon="ui-icon ui-icon-cart" disabled="#{!NumeracionBean.selectedNumsAccion}" rendered="#{UserBean.permisos.numeracion or (UserBean.liberar or UserBean.reservar)}"/>
                            </h:panelGroup>
                        </h:panelGrid>
                        <p:dataTable id="datos" value="#{NumeracionBean.lazyModel}" var="num" paginator="true" paginatorPosition="top" 
                                     selectionMode="#{(UserBean.login == true and UserBean.permisos.numeracion == true) or (UserBean.liberar or UserBean.reservar) ? 'multiple' : null}"
                                     selection="#{NumeracionBean.selectedNums}" rowIndexVar="rowIndex" widgetVar="datatableVar" rowKey="#{num.nunCodigo}"
                                     rows="20" emptyMessage="No se encontraron registros" style="font-size:10px" lazy="true" rowsPerPageTemplate="10,20,30,40,50,100"
                                     paginatorTemplate=" #{NumeracionBean.lazyModel.rowCount} registros encontrados {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                            <p:ajax event="rowSelect" listener="#{NumeracionBean.onRowSelect}" update=":frmDatos:opciones" />
                            <p:ajax event="rowUnselect" listener="#{NumeracionBean.onRowUnselect}" update=":frmDatos:opciones" />

                            <p:column style="width:25px">
                                <p:commandButton update=":display,:datosRecurso" oncomplete="numDialog.show();" icon="ui-icon ui-icon-search" action="#{NumeracionBean.detalleNum}">
                                    <f:setPropertyActionListener target="#{NumeracionBean.selectedNum}" value="#{num}"/>  
                                </p:commandButton>
                            </p:column>

                            <p:column headerText="NDC" >
                                <h:outputText value="#{num.ndnCodigo.ndtNombre}"/>
                            </p:column>
                            <p:column headerText="INICIO" >
                                <h:outputText value="#{fnc:rellenarCerosIzquierda(num.nunInicio,7)}"/>
                            </p:column>
                            <p:column headerText="FIN" >
                                <h:outputText value="#{fnc:rellenarCerosIzquierda(num.nunFin,7)}"/>
                            </p:column>
                            <p:column headerText="CANTIDAD" >
                                <h:outputText value="#{num.nunFin-num.nunInicio+1}"/>
                            </p:column>
                            <p:column headerText="DEPARTAMENTO" >
                                <h:outputText value="#{num.codigoMunicipio.codigoDepartamento.nombreDepartamento}"/>
                            </p:column>
                            <p:column headerText="MUNICIPIO" >
                                <h:outputText value="#{num.codigoMunicipio.nombreMunicipio}"/>
                            </p:column>
                            <p:column headerText="CLASE NUMERACIÓN" >
                                <h:outputText value="#{num.ndnCodigo.ntnCodigo.nttNombre}"/>
                            </p:column>
                            <p:column headerText="ESTADO" style="width:100px">
                                <div style="width: 100%; text-align: center;" class="#{num.esnCodigo.esnCodigo == '3' ? 'estado-asignado' :
                                                                                       num.esnCodigo.esnCodigo == '4' ? 'estado-reserva' : 
                                                                                       num.esnCodigo.esnCodigo == '2' ? 'estado-preasignado' :
                                                                                       num.esnCodigo.esnCodigo == '1' ? 'estado-libre' :
                                                                                       null}">
                                    <h:outputText value="#{num.esnCodigo.estNombre}"/>
                                </div>
                            </p:column>
                            <p:column headerText="EMPRESA" >
                                <h:outputText value="#{num.emrCodigo.emtNombre}"/>
                            </p:column>
                        </p:dataTable>
                        
                        

                    </h:form>
                </h:panelGrid>

                <!-- DETALLE RECURSO -->
                <h:panelGroup id="datosRecurso">
                    <p:dialog header="Detalle" widgetVar="numDialog" resizable="false" modal="true" draggable="false"
                              width="700" showEffect="fade" hideEffect="fade" position="center">
                        <h:panelGrid cellpadding="1" style="font-size: 10px;" width="400">
                            <h:form>
                                <h:panelGrid columns="2" cellpadding="4" width="100%">
                                    <h:outputText value="NDC:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.ndnCodigo.ndtNombre}" />
                                    <h:outputText value="Bloque numeración:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.nunInicio} - #{NumeracionBean.selectedNum.nunFin}" />
                                    <h:outputText value="Estado:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.esnCodigo.estNombre}" />
                                    <h:outputText value="Operador:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.emrCodigo.emtNombre}" />
                                    <h:outputText value="Muncipio:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.codigoMunicipio.nombreMunicipio} (#{NumeracionBean.selectedNum.codigoMunicipio.codigoDepartamento.nombreDepartamento})" />
                                    <h:outputText value="Clase numeración:" style="font-weight: bold;"/>
                                    <h:outputText value="#{NumeracionBean.selectedNum.ndnCodigo.ntnCodigo.nttNombre}" />
                                </h:panelGrid>
                                <p:dataTable id="datosNum" value="#{NumeracionBean.detalleSelectedNum}" var="detalleNum" paginator="false" style="font-size:10px"
                                             selection="#{NumeracionBean.selectedNums}" selectionMode="#{(UserBean.login == true) ? 'multiple' : null}" rowKey="#{detalleNum.nunCodigo}">
                                    <f:facet name="header">Detalle numeración</f:facet>
                                    <p:column headerText="NDC" styleClass="tabla-expandir">
                                        <h:outputText value="#{detalleNum.ndnCodigo.ndtNombre}"/>
                                    </p:column>
                                    <p:column headerText="BLOQUE" styleClass="tabla-recurso">
                                        <h:outputText value="#{detalleNum.nunInicio} - #{detalleNum.nunFin}"/>
                                    </p:column>
                                    <p:column headerText="Observaciones" >
                                        <h:outputText value="#{detalleNum.nutObservaciones}"/>
                                    </p:column>
                                </p:dataTable>
                                <h:panelGrid columns="2" width="100%" style="text-align: center;">
                                    <h:panelGroup rendered="#{UserBean.login}">
                                        <h:outputText value="Los bloques en reserva solo pueden ser manipulados por el administrador" rendered="#{(!UserBean.reservar) and (NumeracionBean.selectedNum.esnCodigo.esnCodigo == 4)}" style="color: red;"/>
                                        <p:commandButton value="Pre-Asignar" rendered="#{(NumeracionBean.selectedNum.esnCodigo.esnCodigo == 1)and(UserBean.permisos.numeracion)}" action="#{TramiteBean.opcionesPreasignar}" update=":datosPreasignar,:display" oncomplete="numDialog.hide();preasignarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                        </p:commandButton>
                                        <p:commandButton value="Recuperar" rendered="#{(NumeracionBean.selectedNum.esnCodigo.esnCodigo == 3)and(UserBean.permisos.numeracion)}" update=":datosRecuperar,:display" oncomplete="numDialog.hide();recuperarDialog.show();" disabled="#{!NumeracionBean.selectedNumsAccion}"/>
                                        <p:commandButton value="Liberar" rendered="#{(NumeracionBean.selectedNum.esnCodigo.esnCodigo == 4)and(UserBean.liberar)}" action="#{TramiteBean.liberarReservarRecurso}" update=":datosResultadoAgregar" oncomplete="numDialog.hide();resultadoAgregarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                            <f:setPropertyActionListener target="#{TramiteBean.codigoAccion}" value="1"/>
                                        </p:commandButton>
                                        <p:commandButton value="Reservar" rendered="#{(NumeracionBean.selectedNum.esnCodigo.esnCodigo == 1)and(UserBean.reservar)}" action="#{TramiteBean.liberarReservarRecurso}" update=":datosResultadoAgregar" oncomplete="numDialog.hide();resultadoAgregarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                            <f:setPropertyActionListener target="#{TramiteBean.codigoAccion}" value="4"/>
                                        </p:commandButton>
                                    </h:panelGroup>

                                    <p:commandButton type="button" value="Ver Historia" onclick="historiaDialog.show();"/>

                                </h:panelGrid>
                            </h:form>
                        </h:panelGrid>
                    </p:dialog>

                    <p:dialog header="Historia recurso" widgetVar="historiaDialog" resizable="false" modal="true" draggable="false" 
                              width="400" height="300" showEffect="fade" hideEffect="fade" position="center">
                        <h:form>
                            <p:dataTable var="tn" value="#{NumeracionBean.tramiteNumeracion}" style="font-size: 10px;"
                                         emptyMessage="No se encontró historia registrada para este recurso">
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Resolución" style="font-weight: bold;"/>
                                    </f:facet>
                                    <h:outputText value="#{tn.trnCodigo.trnResolucion}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Fecha Resolución" style="font-weight: bold;"/>
                                    </f:facet>
                                    <h:outputText value="#{tn.trnCodigo.trfFechaResolucion}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" type="date" timeZone="EST"/>
                                    </h:outputText>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Acción" style="font-weight: bold;"/>
                                    </f:facet>
                                    <h:outputText value="#{tn.acnCodigo.actNombre}"/>
                                </p:column>
                            </p:dataTable>
                        </h:form>
                    </p:dialog>
                </h:panelGroup>

                <h:panelGroup id="datosAccionRecurso">

                    <p:dialog header="Detalle" widgetVar="numAccionDialog" resizable="false" modal="true" draggable="false"
                              showEffect="fade" hideEffect="fade" position="center" style="position: absolute;">
                        <h:panelGrid cellpadding="1" style="font-size: 9px;" width="100%">
                            <h:form>
                                <h:outputText value="#{NumeracionBean.selectedNumsCantidad} números seleccionados" style="font-weight: bold"/>

                                <p:dataTable id="datosAccionNum" value="#{NumeracionBean.selectedNums}" var="detalleNum" paginator="false" style="font-size:9px">
                                    <f:facet name="header">Detalle numeración</f:facet>
                                    <p:column headerText="NDC" >
                                        <h:outputText value="#{detalleNum.ndnCodigo.ndtNombre}"/>
                                    </p:column>
                                    <p:column headerText="BLOQUE" styleClass="tabla-recurso">
                                        <h:outputText value="#{detalleNum.nunInicio} - #{detalleNum.nunFin}"/>
                                    </p:column>
                                    <p:column headerText="CANTIDAD">
                                        <h:outputText value="#{detalleNum.nunFin-detalleNum.nunInicio+1}"/>
                                    </p:column>
                                    <p:column headerText="MUNICIPIO" styleClass="tabla-municipio">
                                        <h:outputText value="#{detalleNum.codigoMunicipio.nombreMunicipio}"/>
                                        <br/>
                                        <h:outputText value="(#{detalleNum.codigoMunicipio.codigoDepartamento.nombreDepartamento})"/>
                                    </p:column>
                                    <p:column headerText="ESTADO" >
                                        <h:outputText value="#{detalleNum.esnCodigo.estNombre}"/>
                                    </p:column>
                                    <p:column headerText="EMPRESA" >
                                        <h:outputText value="#{detalleNum.emrCodigo.emtNombre}"/>
                                    </p:column>
                                </p:dataTable>

                                <h:panelGrid columns="2" style="text-align: center;">
                                    <h:panelGroup rendered="#{UserBean.login}">
                                        <h:outputText value="Los bloques en reserva solo pueden ser manipulados por el administrador" rendered="#{(!UserBean.reservar) and (NumeracionBean.selectedNum.esnCodigo.esnCodigo == 4)}" style="color: red;"/>
                                        <p:commandButton value="Pre-Asignar" rendered="#{(UserBean.permisos.numeracion and NumeracionBean.selectedNumsPreasignar)}" action="#{TramiteBean.opcionesPreasignar}" update=":datosPreasignar" oncomplete="numAccionDialog.hide();preasignarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                        </p:commandButton>
                                        <p:commandButton value="Recuperar" rendered="#{(UserBean.permisos.numeracion and NumeracionBean.selectedNumsRecuperar)}" update=":datosRecuperar" oncomplete="numAccionDialog.hide();recuperarDialog.show();"/>
                                        <p:commandButton value="Liberar" rendered="#{(UserBean.liberar and NumeracionBean.selectedNumsLiberar)}" action="#{TramiteBean.liberarReservarRecurso}" update=":datosResultadoAgregar" oncomplete="numAccionDialog.hide();resultadoAgregarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                            <f:setPropertyActionListener target="#{TramiteBean.codigoAccion}" value="1"/>
                                        </p:commandButton>
                                        <p:commandButton value="Reservar" rendered="#{(UserBean.reservar and NumeracionBean.selectedNumsReservar)}" action="#{TramiteBean.liberarReservarRecurso}" update=":datosResultadoAgregar" oncomplete="numAccionDialog.hide();resultadoAgregarDialog.show();">
                                            <f:setPropertyActionListener target="#{TramiteBean.tipoRecurso}" value="numeracion"/>
                                            <f:setPropertyActionListener target="#{TramiteBean.codigoAccion}" value="4"/>
                                        </p:commandButton>
                                    </h:panelGroup>

                                </h:panelGrid>
                                
                            </h:form>
                        </h:panelGrid>
                    </p:dialog>
                </h:panelGroup>

                

            </h:panelGroup>
            
        </h:panelGroup>
    </ui:composition>
</html>
